package com.aididi.java8;

import java.util.function.Supplier;

/**
 * @Auther: zx.xu       生产型接口
 * @Description:    Supplier 原意：供应商，供应者
 *      接口仅包含一个无参的方法： T get() 。 T get() 用来获取一个泛型参数指定类型的对象数据。由于这是一个函数式接口，
 *      这也就意味着对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象数据
 */
public class SupplierDemo {

    private static String getString(Supplier<String> fun) {
        return fun.get();
    }

    public static int getMax(Supplier<Integer> su) {
        return su.get();
    }

    public static void main(String[] args) {
        String person1 = "苍井空";
        String person2 = "小泽玛利亚";
        String person3 = "波多野结衣";
        String person4 = "泷泽萝拉";
        System.out.println(getString(() -> person1 + person2 + person3 + person4));

        //求数组中元素的最大值
        int[] arr = {5, 3, 56, 99, 0};
        //调用getMax方法,参数传递Lambda
        int result = getMax(() -> {
            int ma = arr[0];
            for (int i : arr) {
                if (i > ma) {
                    ma = i;
                }
            }
            return ma;
        });
        System.out.println(result);

    }

}
